package com.ruoyi.tuanzhang.domain.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
/**
 * 达人列表页 /square_pc_api/square/search_feed_author
 * */
@NoArgsConstructor
@Data
public class DarenListDto {

    // 返回code 0：正常
    @JsonProperty("code")
    private Integer code;
    //实际数据
    @JsonProperty("data")
    private DataDTO data;
    // 日志id
    @JsonProperty("log_id")
    private String logId;
    // 消息
    @JsonProperty("msg")
    private String msg;
    @JsonProperty("st")
    private Integer st;

    @NoArgsConstructor
    @Data
    public static class DataDTO {
        // 还有更多数据
        @JsonProperty("has_more")
        private Boolean hasMore;
        @JsonProperty("res_source")
        private Integer resSource;
        @JsonProperty("list")
        private List<ListDTO> list;
        @JsonProperty("total")
        private Integer total;
        @JsonProperty("event_track_log_id")
        private String eventTrackLogId;

        @NoArgsConstructor
        @Data
        public static class ListDTO {
            // 达人基本信息
            @JsonProperty("author_base")
            private AuthorBaseDTO authorBase;
            // 达人配置
            @JsonProperty("author_conf")
            private AuthorConfDTO authorConf;
            // 达人邀约带货
            @JsonProperty("author_connection")
            private AuthorConnectionDTO authorConnection;
            // 达人联系方式
            @JsonProperty("author_contact")
            private AuthorContactDTO authorContact;
            @JsonProperty("author_crm")
            private AuthorCrmDTO authorCrm;
            // 用户图文带货信息
            @JsonProperty("author_image_text")
            private AuthorImageTextDTO authorImageText;
            // 达人直播信息
            @JsonProperty("author_live")
            private AuthorLiveDTO authorLive;
            // 达人销售信息
            @JsonProperty("author_sale")
            private AuthorSaleDTO authorSale;
            @JsonProperty("author_score")
            private AuthorScoreDTO authorScore;
            // 达人标签
            @JsonProperty("author_tag")
            private AuthorTagDTO authorTag;
            // 达人单视频销售额
            @JsonProperty("author_video")
            private AuthorVideoDTO authorVideo;
            // 达人窗口
            @JsonProperty("author_window")
            private AuthorWindowDTO authorWindow;
            @JsonProperty("latest_content")
            private LatestContentDTO latestContent;
            // 销售信息
            @JsonProperty("sale_info")
            private SaleInfoDTO saleInfo;

            @NoArgsConstructor
            @Data
            public static class AuthorBaseDTO {
                // 用户uid
                @JsonProperty("uid")
                private String uid;
                // 达人id
                @JsonProperty("author_id")
                private Integer authorId;
                // 昵称
                @JsonProperty("nickname")
                private String nickname;
                // 头像
                @JsonProperty("avatar")
                private String avatar;
                @JsonProperty("avatar_big")
                private String avatarBig;

                // 粉丝数
                @JsonProperty("fans_num")
                private Integer fansNum;
                // 1男 2女
                @JsonProperty("gender")
                private Integer gender;
                // 城市
                @JsonProperty("city")
                private String city;
                // 达人等级
                @JsonProperty("author_level")
                private Integer authorLevel;

                @JsonProperty("aweme_id")
                private String awemeId;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorTagDTO {
                @JsonProperty("work_cate")
                private List<String> workCate;
                // 主推类目
                @JsonProperty("main_cate")
                private List<String> mainCate;
                @JsonProperty("dark_horse")
                private String darkHorse;
                // 是否有联系方式
                @JsonProperty("contact_icon")
                private String contactIcon;
                @JsonProperty("high_reply")
                private String highReply;
                @JsonProperty("invitation_status")
                private Integer invitationStatus;
                @JsonProperty("invite_status")
                private Integer inviteStatus;
                @JsonProperty("satisfy_requirement")
                private Integer satisfyRequirement;
                @JsonProperty("already_cooperated")
                private Boolean alreadyCooperated;
                @JsonProperty("is_star")
                private Boolean isStar;
                @JsonProperty("high_response_rate")
                private String highResponseRate;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorContactDTO {
                @JsonProperty("phone")
                private String phone;
                @JsonProperty("wechat")
                private String wechat;
                @JsonProperty("lark")
                private String lark;
                @JsonProperty("douyin")
                private String douyin;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorLiveDTO {
                @JsonProperty("watching_number")
                private Integer watchingNumber;
                @JsonProperty("sale_status")
                private Integer saleStatus;
                @JsonProperty("sale_low")
                private Integer saleLow;
                @JsonProperty("sale_high")
                private Integer saleHigh;
                @JsonProperty("GPM_status")
                private Integer gpmStatus;
                @JsonProperty("GPM_low")
                private Integer gpmLow;
                @JsonProperty("GPM_high")
                private Integer gpmHigh;
                @JsonProperty("watching_times")
                private Integer watchingTimes;
                @JsonProperty("all_live_num_30d")
                private Integer allLiveNum30d;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorVideoDTO {
                @JsonProperty("play_median")
                private Integer playMedian;
                @JsonProperty("GPM_status")
                private Integer gpmStatus;
                @JsonProperty("GPM_low")
                private Integer gpmLow;
                @JsonProperty("GPM_high")
                private Integer gpmHigh;
                @JsonProperty("video_sale_status")
                private Integer videoSaleStatus;
                @JsonProperty("video_sale_low")
                private Integer videoSaleLow;
                @JsonProperty("video_sale_high")
                private Integer videoSaleHigh;
                @JsonProperty("watching_times")
                private Integer watchingTimes;
                // 近30天推广视频数量
                @JsonProperty("all_video_num_30d")
                private Integer allVideoNum30d;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorConfDTO {
                @JsonProperty("sale_requirement")
                private SaleRequirementDTO saleRequirement;
                @JsonProperty("effective_invite_num")
                private Integer effectiveInviteNum;

                @NoArgsConstructor
                @Data
                public static class SaleRequirementDTO {
                    @JsonProperty("type")
                    private Integer type;
                    @JsonProperty("value")
                    private String value;
                    @JsonProperty("price_type")
                    private Integer priceType;
                }
            }

            @NoArgsConstructor
            @Data
            public static class AuthorScoreDTO {
                @JsonProperty("expr_score")
                private ExprScoreDTO exprScore;
                @JsonProperty("product_score")
                private ProductScoreDTO productScore;
                @JsonProperty("logistics_score")
                private LogisticsScoreDTO logisticsScore;
                @JsonProperty("service_score")
                private ServiceScoreDTO serviceScore;

                @NoArgsConstructor
                @Data
                public static class ExprScoreDTO {
                    @JsonProperty("score")
                    private Integer score;
                    @JsonProperty("level")
                    private String level;
                    @JsonProperty("percentage")
                    private Integer percentage;
                }

                @NoArgsConstructor
                @Data
                public static class ProductScoreDTO {
                    @JsonProperty("score")
                    private Integer score;
                    @JsonProperty("level")
                    private String level;
                    @JsonProperty("percentage")
                    private Integer percentage;
                }

                @NoArgsConstructor
                @Data
                public static class LogisticsScoreDTO {
                    @JsonProperty("score")
                    private Integer score;
                    @JsonProperty("level")
                    private String level;
                    @JsonProperty("percentage")
                    private Integer percentage;
                }

                @NoArgsConstructor
                @Data
                public static class ServiceScoreDTO {
                    @JsonProperty("score")
                    private Integer score;
                    @JsonProperty("level")
                    private String level;
                    @JsonProperty("percentage")
                    private Integer percentage;
                }
            }

            @NoArgsConstructor
            @Data
            public static class AuthorSaleDTO {
                @JsonProperty("sale_status")
                private Integer saleStatus;
                @JsonProperty("sale_d30_low")
                private Integer saleD30Low;
                @JsonProperty("sale_d30_high")
                private Integer saleD30High;
                // 销售类型
                @JsonProperty("main_sale_type")
                private String mainSaleType;
                @JsonProperty("promotion_num")
                private Integer promotionNum;
                @JsonProperty("cooperate_content_num")
                private Integer cooperateContentNum;
                @JsonProperty("cooperate_product_num")
                private Integer cooperateProductNum;
            }

            @NoArgsConstructor
            @Data
            public static class SaleInfoDTO {
                @JsonProperty("total_sales")
                private TotalSalesDTO totalSales;
                @JsonProperty("live_total_sales")
                private LiveTotalSalesDTO liveTotalSales;
                @JsonProperty("video_total_sales")
                private VideoTotalSalesDTO videoTotalSales;
                @JsonProperty("image_text_total_sales")
                private ImageTextTotalSalesDTO imageTextTotalSales;
                @JsonProperty("window_total_sales")
                private WindowTotalSalesDTO windowTotalSales;

                @NoArgsConstructor
                @Data
                public static class TotalSalesDTO {
                    @JsonProperty("sale_status")
                    private Integer saleStatus;
                    @JsonProperty("sale_value")
                    private Integer saleValue;
                    @JsonProperty("sale_low")
                    private Integer saleLow;
                    @JsonProperty("sale_high")
                    private Integer saleHigh;
                }

                @NoArgsConstructor
                @Data
                public static class LiveTotalSalesDTO {
                    @JsonProperty("sale_status")
                    private Integer saleStatus;
                    @JsonProperty("sale_value")
                    private Integer saleValue;
                    @JsonProperty("sale_low")
                    private Integer saleLow;
                    @JsonProperty("sale_high")
                    private Integer saleHigh;
                }

                @NoArgsConstructor
                @Data
                public static class VideoTotalSalesDTO {
                    @JsonProperty("sale_status")
                    private Integer saleStatus;
                    @JsonProperty("sale_value")
                    private Integer saleValue;
                    @JsonProperty("sale_low")
                    private Integer saleLow;
                    @JsonProperty("sale_high")
                    private Integer saleHigh;
                }

                @NoArgsConstructor
                @Data
                public static class ImageTextTotalSalesDTO {
                    @JsonProperty("sale_status")
                    private Integer saleStatus;
                    @JsonProperty("sale_value")
                    private Integer saleValue;
                    @JsonProperty("sale_low")
                    private Integer saleLow;
                    @JsonProperty("sale_high")
                    private Integer saleHigh;
                }

                @NoArgsConstructor
                @Data
                public static class WindowTotalSalesDTO {
                    @JsonProperty("sale_status")
                    private Integer saleStatus;
                    @JsonProperty("sale_value")
                    private Integer saleValue;
                    @JsonProperty("sale_low")
                    private Integer saleLow;
                    @JsonProperty("sale_high")
                    private Integer saleHigh;
                }
            }

            @NoArgsConstructor
            @Data
            public static class AuthorImageTextDTO {
                // 图文带货数量
                @JsonProperty("image_text_num")
                private Integer imageTextNum;
                // 查看次数
                @JsonProperty("watching_times")
                private Integer watchingTimes;

                @JsonProperty("GPM_status")
                private Integer gpmStatus;
                @JsonProperty("GPM_low")
                private Integer gpmLow;
                @JsonProperty("GPM_high")
                private Integer gpmHigh;
                @JsonProperty("sale_low")
                private Integer saleLow;
                @JsonProperty("sale_high")
                private Integer saleHigh;
                // 近30天图文带货数
                @JsonProperty("all_image_text_num_30d")
                private Integer allImageTextNum30d;
                // 销售状态 0：无
                @JsonProperty("sale_status")
                private Integer saleStatus;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorWindowDTO {
                // 橱窗数量
                @JsonProperty("product_num")
                private Integer productNum;
                @JsonProperty("order_low")
                private Integer orderLow;
                @JsonProperty("order_high")
                private Integer orderHigh;
                @JsonProperty("status")
                private Integer status;
            }

            @NoArgsConstructor
            @Data
            public static class AuthorCrmDTO {
                @JsonProperty("is_join")
                private Boolean isJoin;
            }

            @NoArgsConstructor
            @Data
            public static class LatestContentDTO {
                @JsonProperty("latest_video")
                private LatestVideoDTO latestVideo;

                @NoArgsConstructor
                @Data
                public static class LatestVideoDTO {
                    @JsonProperty("title")
                    private String title;
                    @JsonProperty("preview_pic")
                    private String previewPic;
                    @JsonProperty("content_url")
                    private String contentUrl;
                    @JsonProperty("date_create")
                    private String dateCreate;
                }
            }

            @NoArgsConstructor
            @Data
            public static class AuthorConnectionDTO {
                @JsonProperty("rule_link")
                private String ruleLink;
                @JsonProperty("im_status")
                private Integer imStatus;
                @JsonProperty("im_hover_text")
                private String imHoverText;
            }
        }
    }
}
